/*
 * @Description: 
 * @Autor: CDKEY
 * @Date: 2021-09-24 00:49:04
 */
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
var ProgressBarPlugin = require('progress-bar-webpack-plugin'); // 显示进程的完成进度
const chalk = require('chalk');// 设置进度字体颜色
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;// 以树图的方式展示打包后的文件
const CopyWebpackPlugin = require('copy-webpack-plugin') // 拷贝插件

var nodeExternals = require('webpack-node-externals')

// const ConsoleLogOnBuildWebpackPlugin = require('./my-webpack-plugin') 

var webpack = require('webpack'); // 用于访问内置插件
const path = require('path');

module.exports = {
  target: 'node', // 默认是web, node代表webpack 将在类 Node.js 环境编译代码。(使用 Node.js 的 require 加载 chunk，而不加载任何内置模块，如 fs 或 path
  externals: [nodeExternals()],
  // entry: "./index.js", // 入口文件
  entry: "./node-app.js", // 入口文件
  output: { // 输出文件
    path: path.resolve(__dirname, 'dist'), // 输出目录
    filename: '[name].js', // 输出文件名 [name]是chunk写法
  },
  optimization: {
    // minimize: false  // 不压缩代码
  },
  mode: 'production',//production | development | none
  module: { // 模块
    rules: [ // 加载器
      // { test: /\.css$/, use: ["style-loader", "css-loader"] },

    ]
  },
  plugins: [

    // new CopyWebpackPlugin({ // 拷贝插件
    //   patterns:
    //     [
    //       {
    //         from: path.resolve(__dirname, './static'),
    //         to: 'static',
    //         // ignore: ['.*']
    //       }
    //     ]
    // }),
    // new webpack.BannerPlugin('BannerPlugin 文件头部输出一些注释信息'), //用于在文件头部输出一些注释信息
    // new webpack.ProgressPlugin(),
    // new HtmlWebpackPlugin({ template: "./index.html" }), // html模板
    // new CleanWebpackPlugin(), // 每次打包清空打包目录
    // new ProgressBarPlugin({ // 显示进程的完成进度
    //   format: chalk.green('Progressing') + '[:bar]' + chalk.green(':percent') + '(:elapsed seconds)',
    //   clear: false
    // }),
    // new BundleAnalyzerPlugin({  // 以树图的方式展示打包后的文件
    //   //  可以是`server`，`static`或`disabled`。
    //   //  在`server`模式下，分析器将启动HTTP服务器来显示软件包报告。
    //   //  在“静态”模式下，会生成带有报告的单个HTML文件。
    //   //  在`disabled`模式下，你可以使用这个插件来将`generateStatsFile`设置为`true`来生成Webpack Stats JSON文件。
    //   analyzerMode: 'server',
    //   //  将在“服务器”模式下使用的主机启动HTTP服务器。
    //   analyzerHost: '127.0.0.1',
    //   //  将在“服务器”模式下使用的端口启动HTTP服务器。
    //   analyzerPort: 8888,
    //   //  路径捆绑，将在`static`模式下生成的报告文件。
    //   //  相对于捆绑输出目录。
    //   reportFilename: 'report.html',
    //   //  模块大小默认显示在报告中。
    //   //  应该是`stat`，`parsed`或者`gzip`中的一个。
    //   //  有关更多信息，请参见“定义”一节。
    //   defaultSizes: 'parsed',
    //   //  在默认浏览器中自动打开报告
    //   openAnalyzer: true,
    //   //  如果为true，则Webpack Stats JSON文件将在bundle输出目录中生成
    //   generateStatsFile: false,
    //   //  如果`generateStatsFile`为`true`，将会生成Webpack Stats JSON文件的名字。
    //   //  相对于捆绑输出目录。
    //   statsFilename: 'stats.json',
    //   //  stats.toJson（）方法的选项。
    //   //  例如，您可以使用`source：false`选项排除统计文件中模块的来源。
    //   //  在这里查看更多选项：https：  //github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21
    //   statsOptions: null,
    //   logLevel: 'info' // 日志级别。可以是'信息'，'警告'，'错误'或'沉默'。
    // }),
    // new ConsoleLogOnBuildWebpackPlugin() // 自定义测试插件
  ],
  // // 对webpack-dev-server进行配置
  // devServer: {
  //   static: {
  //     directory: path.join(__dirname, '/'), // 静态目录文件 默认index.html
  //   },
  //   compress: false, // 启用压缩
  //   port: 3000, // 服务端口
  // }
}